<?php
namespace Lib;

class Captcha { 
	function create ($sname) {
	   session_start();//必须位于脚本的最顶端
	   $image=imagecreatetruecolor(100, 30);//imagecreatetruecolor函数建一个真彩色图像
	   //生成彩色像素
	   $bgcolor=imagecolorallocate($image, 255, 255, 255);//白色背景     imagecolorallocate函数为一幅图像分配颜色
	   $textcolor=imagecolorallocate($image,0,0,255);//蓝色文本
	   //填充函数，xy确定坐标，color颜色执行区域填充颜色
	   imagefill($image, 0, 0, $bgcolor);
	   $captch_code="";//初始空值

	   //该循环,循环取数
	   for($i=0;$i<4;$i++){
			 $fontsize=5;
			 $x=($i*25)+rand(5,10);
			 $y=rand(5,10);//位置随机
			//  $fontcontent=$i>2?chr(rand(97,122)):chr(rand(65,90));//是小写，否则是大写
			$data='abcdefghijkmnpqrstuvwxyz3456789';
			$fontcontent=substr($data,rand(0,strlen($data)-1),1);//strlen仅仅是一个计数器的工作  含数字和字母的验证码
																   //可以理解为数组长度0到30
			$fontcolor=imagecolorallocate($image,rand(0,100),rand(0,100),rand(0,100));//随机的rgb()值可以自己定

			imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); //水平地画一行字符串
			$captch_code.=$fontcontent;
		}
		$_SESSION[$sname]=$captch_code;//将变量保存再session的authcode变量中

		//该循环,循环画背景干扰的点
		for($m=0;$m<=600;$m++){
			 $x2=rand(1,99);
			 $y2=rand(1,99);
			 $pointcolor=imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255));
			imagesetpixel($image,$x2,$y2,$pointcolor);// 水平地画一串像素点
		}

		//该循环,循环画干扰直线
	   for ($i=0;$i<=10;$i++){
		   $x1=rand(0,99);
		   $y1=rand(0,99);
		   $x2=rand(0,99);
		   $y2=rand(0,99);
		   $linecolor=imagecolorallocate($image,rand(0,255),rand(0,255),rand(0,255));
		   imageline($image,$x1,$y1,$x2,$y2,$linecolor);//画一条线段
	   }

	   ob_start();
       imagepng($image);
       $image = ob_get_contents();
       ob_end_clean();
	   imagedestroy($image);//销毁
	   return $image;
	} 
}


?>